<?php
/**
* 名称：新闻模块控制器。
* 描述：新闻模块的相关程式。
*/
final class Controller_News extends Controller_Public_Account{
    /**
    * 描述：显示新闻列表。
    * @access protected
    * @return void
    */
    protected function Listview(){
        $data=self::$Database->GetLimit(
            'SELECT * FROM '.self::$Database->Table('news').' ORDER BY id DESC',
            Route::GetArguments('page'),
            20
        );
        self::$Template->Assign('data',$data);
        self::$Template->Assign('urlArguments',array('class'=>'0'));
        self::$Template->Display('oui/news/list.html');
    }

    /**
    * 描述：显示新增新闻视图。
    * @access protected
    * @return void
    */
    protected function Add(){
        $meta=array(
            'title'=>'发布新闻',
            'action'=>Route::MakeHyperlink(':news::insert')
        );
        //~
        self::$Template->Assign('meta',$meta);
        self::$Template->Display('oui/news/form.html');
    }

    /**
    * 描述：响应新增新闻程式。
    * @access protected
    * @return void
    */
    protected function Insert(){
        $data=array(
            'title'=>post('title'),'content'=>post('content')
            //,'author'=>post('author'),
//            'source'=>post('source'),'label'=>post('label'),'summary'=>post('summary'),
//            'datetime'=>post('datetime'),'class'=>post('class'),'cover'=>post('cover'),
//            'isdisplay'=>post('isdisplay')
        );
        //~
        $this->Feedback(
            self::$Database->Insert('news',$data),
            array(
                'notice'=>'新闻发布成功，2秒钟后自动返回。',
                'link'=>array(
                    array('name'=>'继续发布','href'=>Route::MakeHyperlink(':news::add')),
                    array('name'=>'返回列表','href'=>Route::MakeHyperlink(':news::listview'))
                ),
                'autoTurn'=>array(TRUE,2)
            ),
            '发布失败，请稍候再试！'
        );
        //echo self::$Database->GetExtensionMethodErrorInfo();
    }

    /**
    * 描述：显示修改新闻视图。
    * @access protected
    * @return void
    */
    protected function Edit(){
        $meta=array(
            'title'=>'更新新闻',
            'action'=>Route::MakeHyperlink(':news::update')
        );
        //--
        $data=array(
            'id'=>'1',
            'title'=>'title1',
            'content'=>'content'
        );
        self::$Template->Assign('meta',$meta);
        self::$Template->Assign('data',$data);
        self::$Template->Display('oui/news/form.html');
    }

    /**
    * 描述：响应新闻修改程式。
    * @access protected
    * @return void
    */
    protected function Update(){
        echo 'update';
    }

    /**
    * 描述：删除新闻程式。
    * @access protected
    * @return void
    */
    protected function Delete(){
        $deleteType=Route::GetArguments('delete-type');
        if($deleteType==='single'){
            $this->Delete_Single();
        }
        elseif($deleteType==='multi'){
            $this->Delete_Multi();
        }
        else{
            Model_Break::Message('删除失败，请求类型错误！');
        }
    }

    /**
    * 描述：新闻删除程式之单项删除。
    * @access private
    * @return void
    */
    private function Delete_Single(){
        $id=Route::GetArguments('id');
        //~
        if(!is_numeric_int($id)){
            Model_Break::Message('删除失败，请求参数错误！');
            exit();
        }
        //~
        $this->Delete_Feedback(self::$Database->ExecParameterized(
            'DELETE FROM '.self::$Database->Table('news').' WHERE id=?',array($id)
        ));
    }

    /**
    * 描述：新闻删除程式之多项删除。
    * @access private
    * @return void
    */
    private function Delete_Multi(){
        $id=Route::GetArguments('id');
        //~
        $this->Delete_Feedback(self::$Database->ExecParameterized(
            'DELETE FROM '.self::$Database->Table('news').' WHERE id in(?)',array($id)
        ));
    }

    /**
    * 描述：执行删除程式后的回馈用户程式。
    * @access private
    * @return void
    */
    private function Delete_Feedback($result){
        $this->Feedback(
            $result,
            $_SERVER['HTTP_REFERER'],
            '删除失败，请稍候再试！'
        );
    }
}